Currently, memory cache architectures may use a fixed sample size for pre-fetch that overtime may impede performance, for example causing excessive fetches because of an improper pre-fetch sample size. Also, heavyweight pipeline flushes may impair rendering performance, and traditional architectures may have difficulty statically determining when to perform pipeline flushes.